<?php
/**
 * Created by PhpStorm.
 * User: edmmss
 * Date: 2018/11/8
 * Time: 13:54
 */

namespace app\modules\builder\controller;


use app\modules\builder\builderFactory\CardBuilder;
use app\modules\builder\builderFactory\TruckBuilder;
use app\modules\builder\director\Director;
use yii\web\Controller;

class DefaultController extends Controller
{
    /**
     * 建造者模式示例
     * 建造者是创建一个复杂对象的一部分接口。
     * 有时候，如果建造者对他所创建的东西拥有较好的知识储备，这个接口就可能成为一个有默认方法的抽象类（又称为适配器）。
     * 如果对象有复杂的继承树，那么对于建造者来说，有一个复杂继承树也是符合逻辑的。
     *
     * @date   2018/11/8
     * @author edmmss
     * @return int
     */
    public function actionIndex()
    {
        $truckBuilder = new TruckBuilder();
        $truckVehicle = (new Director())->build($truckBuilder);

        var_dump($truckVehicle);

        $cardBuilder = new CardBuilder();
        $cardVehicle = (new Director())->build($cardBuilder);

        var_dump($cardVehicle);

        return 2;
    }
}